//#include "MainSubject.h"
//#include "InputMgr.h"
//#include "Event.h"
//#include "ABObserver.h"
//#include "HashTable.h"
//
//MainSubject* Singleton<MainSubject>::m_pInstance = NULL;
//
//MainSubject::MainSubject()
//{
//	HashTable pHashTable;
//	pHashTable.AddNode("Test");
//	pHashTable.AddNode("dddt");
//	int test = pHashTable.Find("dddt");
//}
//MainSubject::~MainSubject()
//{
//
//}
//
//void MainSubject::Update(float a_dt)
//{
//	if(InputMgr::GetInstance().IsKeyPressed(DIK_L))
//	{
//		Event pEvent(Hash("Light"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyPressed(DIK_P))
//	{
//		Event pEvent(Hash("Player"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_W))
//	{
//		Event pEvent(Hash("W Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_A))
//	{
//		Event pEvent(Hash("A Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_S))
//	{
//		Event pEvent(Hash("S Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_D))
//	{
//		Event pEvent(Hash("D Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_Q))
//	{
//		Event pEvent(Hash("Q Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsKeyDown(DIK_E))
//	{
//		Event pEvent(Hash("E Key"));
//		NotifyObservers(pEvent, a_dt);
//	}
//	if(InputMgr::GetInstance().IsMouseButtonPressed(InputMgr::MouseButton_Left))
//	{
//		Event pEvent(Hash("Left Mouse Button"));
//		NotifyObservers(pEvent, a_dt);
//	}
//}
//const unsigned int MainSubject::Hash(const char* a_pKey)
//{
//	int sum = 0;
//	int i = 0;
//	while(a_pKey[i])
//	{
//		sum += a_pKey[i++];
//	}
//	return sum % 256;
//}
//bool MainSubject::AttachObserver(ABObserver *a_pObserver)
//{
//	//Ensure the observer isn't already in the list
//	for(ObserverList::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter)
//	{
//		ABObserver* pElem = *iter;
//		if(a_pObserver == pElem)
//		{
//			return false;
//		}
//	}
//	m_observers.push_back(a_pObserver);
//
//	return true;
//}
//
//bool MainSubject::DetachObserver(ABObserver *a_pObserver)
//{
//	for(ObserverList::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter)
//	{
//		ABObserver* pElem = *iter;
//		if(a_pObserver == pElem)
//		{
//			m_observers.remove(pElem);
//			return true;
//		}
//	}
//	//Not Found
//	return false;
//}
//
//void MainSubject::NotifyObservers(const Event &a_event, float a_dt)
//{
//	for(ObserverList::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter)
//	{
//		ABObserver* pElem = *iter;
//		pElem->Notify(a_event, a_dt);
//	}
//}